/**
* <p>Title: FileUtil.java</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2015</p>
* <p>Company: SiySoft</p>
* @author liguanghui
* @date 2015年6月9日
* @version 1.0
*/
package com.siysoft.util.fileupload;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import org.springframework.web.multipart.MultipartFile;

import sun.misc.BASE64Decoder;

/**
 * <p>Title: FileUtil</p>
 * <p>Description: </p>
 * <p>Company: SiySoft</p>
 * @author    liguanghui
 * @date       2015年6月9日
 */
public class FileUtil {
	
	/**
	 * 方法摘要： 保存MultipartFile
	 * 作者：liguanghui
	 * 日期：2015年6月9日 上午9:02:50
	 * @param file
	 * @param filename 全路径
	 * @throws IllegalStateException
	 * @throws IOException
	 */
	public static void save(MultipartFile file,String filename) throws IllegalStateException, IOException{

		File path = new File(filename);

		file.transferTo(path);
		
	}
	/**
	 * 方法摘要： 删除物理文件
	 * 作者：liguanghui
	 * 日期：2015年6月9日 上午9:06:56
	 * @param filename 文件路径
	 * @throws FileNotFoundException 文件未找到异常
	 */
	public static boolean delete(String filename) throws FileNotFoundException{
		File path=new File(filename);
		if(!path.exists()){
			throw new FileNotFoundException();
		}
		return path.delete();
	}
	/**
	 * 方法摘要： 判断路径是否存在
	 * 作者：liguanghui
	 * 日期：2015年6月9日 上午8:56:50
	 * @param dir
	 * @return
	 */
	public static boolean exists(String dir){
		File path=new File(dir);
		return path.exists();
	}
	/**
	 * 方法摘要： 创建路径
	 * 作者：liguanghui
	 * 日期：2015年6月9日 上午8:59:15
	 * @param dir
	 */
	public static void mkdir(String dir){
		File path=new File(dir);
		if(!path.exists()){
			path.mkdir();
		}
	}
	/**
	 * 方法摘要： base64压缩存储
	 * 作者：liguanghui
	 * 日期：2015年6月9日 下午1:11:52
	 * @param imgData
	 * @param filepath
	 * @throws IOException
	 */
	public static void save(String imgData,String filepath,String filename) throws IOException{
		File imgPath=new File(filepath);
		byte[] data=decode(imgData);
		int len = data.length;  
		
		System.out.println(filepath);
		if(!imgPath.exists()){
			imgPath.mkdir();
		}
		// 写入到文件
		FileOutputStream outputStream = new FileOutputStream(new File(
				imgPath, filename));
		outputStream.write(data);
		outputStream.flush();
		outputStream.close();  
			
	}
	/**
	 * 方法摘要： base64格式转换为byte[]
	 * 作者：liguanghui
	 * 日期：2015年6月9日 下午1:12:09
	 * @param imageData
	 * @return
	 * @throws IOException
	 */
	public static byte[] decode(String imageData) throws IOException{  
	        BASE64Decoder decoder = new BASE64Decoder();  
	        byte[] data = decoder.decodeBuffer(imageData);  
	        for(int i=0;i<data.length;++i)  
	        {  
	            if(data[i]<0)  
	            {  
	                //调整异常数据  
	                data[i]+=256;  
	            }  
	        }  
	        //  
	        return data;  
	    }  

}
